//package com.mg.plugincqamg.module;
//
//import com.mg.model.Model;
//import com.mg.model.Param;
//import com.mg.model.Port;
//import com.mg.plugincqamg.calculator.CloudyAndRainyCalculator;
//import com.mg.plugincqamg.common.DataFormatter;
//import com.mg.plugincqamg.entity.StationData;
//import com.mg.pluginexample2.ModuleBase;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.*;
//
//public class AssistYieldModule extends ModuleBase {
//    public AssistYieldModule(int nID) {
//        super(nID);
//        m_alInputPort.add(new Port(this, Port.Type.Unknown));
//        m_alOutputPort.add(new Port(this, Port.Type.Unknown));
//    }
//
//    public String GetGroupName() {
//        return "产量数据转换";
//    }
//
//    public String GetName() {
//        return "产量数据转换";
//    }
//
//    public String GetDescription() {
//        return "产量数据转换";
//    }
//
//    public boolean OnAttach(Port portFrom, Port portTo) {
//        try {
//            int i = FindPort(portFrom, false);
//            if (i != -1) {
//                return true;
//            }
//            i = FindPort(portTo, true);
//            if (i == -1) {
//                return false;
//            }
//
//            ArrayList<Param> alParam = new ArrayList<Param>();
//            portFrom.GetModule().GetOutputParam(portFrom, alParam);
//
//            if (alParam.size() != 1) {
//                return false;
//            }
//
//            if (alParam.get(0).m_objValue instanceof LinkedList) {
//                LinkedList<String> tmp = (LinkedList<String>) alParam.get(0).m_objValue;
//                m_inputStationDataList.addAll(tmp);
//            } else {
//                m_inputStationDataList = (List<String>) alParam.get(0).m_objValue;
//            }
//
//            portTo.SetType(portFrom.GetType());
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return false;
//        }
//        return true;
//    }
//
//    public boolean OnDetach(Port portFrom, Port portTo) {
//        if (!super.OnDetach(portFrom, portTo))
//            return false;
//        try {
//            int i = FindPort(portTo, true);
//            if (i == -1)
//                return true;
//            return true;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            return false;
//        }
//    }
//
//    //用于 参数->XML 等
//    public int GetParam(ArrayList<Param> alParam) {
//        try {
//            super.GetParam(alParam);
//            alParam.add(new Param("StationId", m_strStationId, "站点ID对应字段", "StationId", "参数匹配", Param.EditType.Default));
//            alParam.add(new Param("Lat", m_strLat, "站点纬度", "Lat", "参数匹配", Param.EditType.Default));
//            alParam.add(new Param("Lon", m_strLon, "站点经度", "Lon", "参数匹配", Param.EditType.Default));
//            alParam.add(new Param("Date", m_strDate, "时间对应字段", "Date", "参数匹配", Param.EditType.Default));
//            alParam.add(new Param("Temperature", m_strTemp, "温度对应字段", "Temperature", "参数匹配", Param.EditType.Default));
//            alParam.add(new Param("ER24", m_strER24, "降水", "ER24", "参数匹配", Param.EditType.Default));
//            alParam.add(new Param("SSH", m_strSSH, "日照", "SSH", "参数匹配", Param.EditType.Default));
//
//        } catch (Exception ex) {
//            ex.printStackTrace();
//        }
//
//        return alParam.size();
//    }
//
//    public boolean OnParamChanged(ArrayList<Param> alParam, int nIndex, Object objValue) {
//        return super.OnParamChanged(alParam, nIndex, objValue);
//    }
//
//    //用于 XML->参数 等
//    public int SetParam(final ArrayList<Param> alParam) {
//        int i = super.SetParam(alParam);
//        try {
//            m_strStationId = (String) alParam.get(i++).m_objValue;
//            m_strLat = (String) alParam.get(i++).m_objValue;
//            m_strLon = (String) alParam.get(i++).m_objValue;
//            m_strDate = (String) alParam.get(i++).m_objValue;
//            m_strTemp = (String) alParam.get(i++).m_objValue;
//            m_strER24 = (String) alParam.get(i++).m_objValue;
//            m_strSSH = (String) alParam.get(i++).m_objValue;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//        }
//        return i;
//    }
//
//    public int GetOutputParam(Port port, ArrayList<Param> alParam) {
//        int i = FindPort(port, false);
//        if (i == -1) {
//            System.out.println("Post Is Null");
//            return 0;
//        }
//
//        alParam.add(new Param("ResultString", m_listCSV));
//        return alParam.size();
//    }
//
//    @SuppressWarnings("static-access")
//    public boolean Execute() {
//
//        m_listCSV.clear();
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//        String head = "id,StationNum,Yield,Year";
//        String type = "String,String,Double,String";
//        m_listCSV.add(head);
//        m_listCSV.add(type);
//
//        String[] inputHead = m_inputStationDataList.get(0).split(",");
//
//        List<StationData> dataList = new ArrayList<StationData>();
//        List<StationData> resList = new ArrayList<StationData>();
//
//        for (int i = 1; i < inputHead.length; i++) {
//            StationData data = new StationData();
//            data.setStationId(inputHead[i]);
//            data.setYieldIndex(i);
//            dataList.add(data);
//        }
//        m_inputStationDataList.remove(0);
//        m_inputStationDataList.remove(1);
//        for (String dataStr : m_inputStationDataList) {
//            resList.addAll(assistData(dataList, dataStr.split(",")));
//        }
//        for (StationData data : resList) {
//            m_listCSV.add(data.getStationId() + data.getDate() + "," + data.getStationId() + "," + data.getYield() + "," + data.getDate());
//        }
//        OnParamChanged();
//        return true;
//    }
//
//    private List<StationData> assistData(List<StationData> dataList, String[] dataStr) {
//        List<StationData> resList = new ArrayList<StationData>();
//        String date = dataStr[0];
//        for (int i = 1; i < dataStr.length; i++) {
//            StationData data = new StationData();
//            String stationId = findStationId(dataList, i);
//            data.setStationId(stationId);
//            data.setDate(date);
//            double yield = 0;
//            try {
//                yield = Double.parseDouble(dataStr[i]);
//            } catch (Exception e) {
//                yield = 0;
//            }
//            data.setYield(yield);
//            resList.add(data);
//        }
//        return resList;
//    }
//
//    private String findStationId(List<StationData> dataList, int i) {
//        for (StationData data : dataList) {
//            if (data.getYieldIndex() == i) {
//                return data.getStationId();
//            }
//        }
//        return null;
//    }
//
//
//    private List<String> m_inputStationDataList = new ArrayList<String>();
//    private List<String> m_listCSV = new ArrayList<String>();
//
//    private String m_strStationId;
//    private String m_strLon;
//    private String m_strLat;
//    private String m_strDate;
//    private String m_strTemp;
//    private String m_strER24;
//    private String m_strSSH;
//
//    private String m_strBeginDate;
//}
